// 拿到npm安装的各个模块
const Koa = require('koa')
const router = require('./routers/router')
const static = require('koa-static')
const views = require('koa-views')
const logger = require('koa-logger')
const body = require('koa-body')
const session = require('koa-session')
const { join } = require('path')  // ES6解构对象，路径拼接方法

// 实例化模块
const app = new Koa

// 创建管理员用户
const { db } = require('./schema/config')
const userSchema = require('./schema/user')
const crypto = require('./utils/encrypt')
const User = db.model("users", userSchema)
User.find({username: "admin"}).then(data => {
  if (data.length === 0) {
    // 管理员不存在，创建管理员
    new User({
      username: "admin",
      password: crypto("admin"),
      role: 666,
      articleNum: 0,
      commentNum: 0
    })
    .save()
    .then(data => {
      console.log('管理员账号：admin，密码：admin');
    })
    .catch(err => {
      console.log('创建失败');
    })
  } else {
    // 管理员存在
    console.log('管理员账号：admin，密码：admin');
  }
})


// session配置对象
app.keys = ['ychizzz secret']
const CONFIG = {
  // CONFIG对象基本上只需要改动key和maxAge两个选项，其余的都默认就好
  key: "Sid",
  maxAge: 36e5,
  overwrite: true,
  httpOnly: true, // 前端是否可见，true为不可见
}

// 注册中间件
app.use(logger()) // 日志模块
app.use(session(CONFIG, app))  // 注册session
app.use(body()) // 请求体信息
app.use(static(join(__dirname, "public")))  // 配置静态资源目录
app.use(views(join(__dirname, "views"), {
  extension: "pug"
}))  // 配置视图模版
app.use(router.routes()).use(router.allowedMethods())

app.listen(2020, () => {
  console.log('项目启动成功，监听在2020端口！');
})


